Software publishers and distributors often want to be able to customize software programs for their clients. For example, a software publisher may produce different versions of a software program for various operating systems, hardware platforms, corporate customers, or regional markets. Similarly, software programs may be localized according to language, national conventions, or cultural differences. In addition, software distributors may distribute multiple software programs for multiple software publishers, leaving the distributor with the task of delivering the correct version of the correct software program to each client. Software licensing is also a form of customization, where the software program as a whole or separate features of the program are activated according to the user's software license.
Unfortunately, an increasing need for information security has made it more difficult to customize software programs. While it was once possible to add custom information to a software program just before delivery, many operating systems and organizational security policies now make it difficult or even impossible to alter the contents of a digitally signed software program without breaking the software program's digital signature. Customizing and digitally signing a software program at delivery time is a resource intensive process that may make the time needed to deliver a software program undesirably long. The instant disclosure, therefore, identifies and addresses a need for systems and methods for dynamically customizing software programs.